﻿package net.libra.utils
{

	/**
	 * 字符串方法集合
	 * @author DanielLu
	 */
	public class StringUtils 
	{
		/**
		 * 去除字符串左边的空格
		 * @param str		要去除空格的字符串
		 */
		public static function trimLeft (str : String) : String
		{
			var length : int = str.length;
			var i : int = 0;
			for(i = 0; i < length ;i ++)
			{
				var s : String = str.charAt( i );
				if(s != " ")break;
			}
			return str.substr( i );
		}

		/**
		 * 去除字符串右边的空格
		 * @param str		要去除空格的字符串
		 */
		public static function trimRight (str : String) : String
		{
			var length : int = str.length;
			var i : int = 0;
			for(i = length - 1; i >= 0 ;i --)
			{
				var s : String = str.charAt( i );
				if(s != " ")break;
			}
			return str.substr( 0 , i + 1 );
		}

		/**
		 * 去除字符串两边的空格
		 * @param str		要去除空格的字符串
		 */
		public static function trim (str : String) : String
		{
			return trimLeft( trimRight( str ) );
		}

		/**
		 * 返回是否是空字符串
		 * @param str		要判断的字符串
		 */
		public static function isEmpty (str : *) : Boolean
		{
			if(! (str is String))
			{
				return true;
			}
			if(str == "")return true;
			return trim( str ) == "";
		}

		/**
		 * 转换成字符串
		 */
		public static function getString (str : *) : String
		{
			if(str == null)return "";
			if(str is String)
			{
				return str as String;
			}
			else if(str is int || str is Number || str is uint || str is Boolean)
			{
				return String( str );
			}
			else
			{
				return str.toString( );
			}
		}

		/**
		 * 替换参数文本
		 * @param str		要替换的字符串
		 * @param rplStr	要替换的字符串标识
		 * @param rpt		替换的字符串数组
		 * @return			处理之后的新字符串
		 */
		public static function replaceText (str : String,rplStr : String,...rpt) : String
		{
			var arr : Array = str.split( rplStr );
			var rpStr : String = "";
			for(var i : int = 0; i < arr.length ;i ++)
			{
				rpStr += arr[i] + (rpt[i] == null ? "" : rpt[i]);
			}
			return rpStr;
		}
		
		/**
		 * 返回两个指定整型之间的随机数
		 * */
		public static function radomBetw(start:int, end:int):Number
		{
			return int(Math.random() * (end - start + 1) + start);
		}
		
	}
}
